home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cli / FixNI.lha / src / error.i < prev    next >
Text File  |  2000-01-04  |  3KB  |  141 lines

  1.  IFND ERROR_I
  2. ERROR_I=1
  3. ;*---------------------------------------------------------------------------
  4. ;  :Author.    Bert Jahn
  5. ;  :Contens.    macros for error handling
  6. ;  :EMail.    wepl@kagi.com
  7. ;  :Address.    Franz-Liszt-Straße 16, Rudolstadt, 07404, Germany
  8. ;  :Version.    $Id: error.i 1.5 2000/01/03 23:42:03 jah Exp jah $
  9. ;  :History.    30.12.95 separated from WRip.asm
  10. ;        18.01.96 IFD Label replaced by IFD Symbol
  11. ;             because Barfly optimize problems
  12. ;        17.01.99 _PrintError* optimized
  13. ;        26.12.99 fault string initialisation added in _PrintErrorDOS
  14. ;  :Requires.    -
  15. ;  :Copyright.    This program is free software; you can redistribute it and/or
  16. ;        modify it under the terms of the GNU General Public License
  17. ;        as published by the Free Software Foundation; either version 2
  18. ;        of the License, or (at your option) any later version.
  19. ;        This program is distributed in the hope that it will be useful,
  20. ;        but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. ;        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  22. ;        GNU General Public License for more details.
  23. ;        You can find the full GNU GPL online at: http://www.gnu.org
  24. ;  :Language.    68000 Assembler
  25. ;  :Translator.    Barfly V1.130
  26. ;---------------------------------------------------------------------------*
  27. *##
  28. *##    error.i
  29. *##
  30. *##    _PrintError    subsystem(d0) error(a0) operation(a1)
  31. *##    _PrintErrorDOS    operation(a0)
  32. *##    _PrintErrorTD    error(d0.b) operation(a0)
  33.  
  34.     dc.b    "$Id: error.i 1.5 2000/01/03 23:42:03 jah Exp jah $"
  35.     EVEN
  36.  
  37.         IFND    DOSIO_I
  38.             INCLUDE    dosio.i
  39.         ENDC
  40.         IFND    STRINGS_I
  41.             INCLUDE    strings.i
  42.         ENDC
  43.         IFND    DEVICES_I
  44.             INCLUDE    devices.i
  45.         ENDC
  46.  
  47. ;----------------------------------------
  48. ; Ausgabe eines Fehlers
  49. ; Übergabe :    D0 = CPTR Subsystem | NIL
  50. ;        A0 = CPTR Art des Fehlers | NIL
  51. ;        A1 = CPTR bei Operation | NIL
  52. ; Rückgabe :    -
  53.  
  54. PrintError    MACRO
  55.     IFND    PRINTERROR
  56. PRINTERROR = 1
  57.         IFND    PRINTARGS
  58.             PrintArgs
  59.         ENDC
  60.  
  61. _PrintError    movem.l    d0/a1,-(a7)
  62.         move.l    a0,-(a7)
  63.         lea    (.txt),a0
  64.         move.l    a7,a1
  65.         bsr    _PrintArgs
  66.         add.w    #12,a7
  67.         rts
  68.         
  69. .txt        dc.b    155,"1m%s",155,"22m (%s/%s)",10,0
  70.         EVEN
  71.     ENDC
  72.         ENDM
  73.  
  74. ;----------------------------------------
  75. ; Ausgabe eines DOS-Fehlers
  76. ; Übergabe :    A0 = CPTR Operation die zu Fehler führte | NIL
  77. ; Rückgabe :    -
  78.  
  79. PrintErrorDOS    MACRO
  80.     IFND    PRINTERRORDOS
  81. PRINTERRORDOS = 1
  82.         IFND    PRINTERROR
  83.             PrintError
  84.         ENDC
  85.  
  86. _PrintErrorDOS    movem.l    d2-d4/a0/a6,-(a7)
  87.         move.l    (gl_dosbase,GL),a6
  88.         jsr    (_LVOIoErr,a6)
  89.         move.l    d0,d1            ;code
  90.         moveq    #0,d2            ;header
  91.         moveq    #64,d4            ;buffer length
  92.         sub.l    d4,a7
  93.         clr.b    (a7)
  94.         move.l    a7,d3            ;buffer
  95.         jsr    (_LVOFault,a6)
  96.         lea    (_dosname),a0
  97.         move.l    a0,d0            ;subsystem
  98.         move.l    a7,a0            ;error
  99.         move.l    (12,a7,d4.l),a1        ;operation
  100.         bsr    _PrintError
  101.         add.l    d4,a7
  102.         movem.l    (a7)+,d2-d4/a0/a6
  103.         rts
  104.     ENDC
  105.         ENDM
  106.  
  107. ;----------------------------------------
  108. ; Ausgabe eines Trackdisk Errors
  109. ; Übergabe :    D0 = BYTE errcode
  110. ;        A0 = CPTR Operation | NIL
  111. ; Rückgabe :    -
  112.  
  113. PrintErrorTD    MACRO
  114.     IFND    PRINTERRORTD
  115. PRINTERRORTD=1
  116.         IFND    DOSTRING
  117.             DoString
  118.         ENDC
  119.         IFND    PRINTERROR
  120.             PrintError
  121.         ENDC
  122.  
  123. _PrintErrorTD    move.l    a0,-(a7)
  124.         ext.w    d0
  125.         lea    (_trackdiskerrors),a0
  126.         bsr    _DoString
  127.         move.l    d0,a0            ;error
  128.         lea    (.devaccess),a1
  129.         move.l    a1,d0            ;subsystem
  130.         move.l    (a7)+,a1        ;operation
  131.         bra    _PrintError
  132.  
  133. .devaccess    dc.b    'device access',0
  134.         EVEN
  135.         IFND    TRACKDISKERRORS
  136.             trackdiskerrors
  137.         ENDC
  138.     ENDC
  139.         ENDM
  140.  ENDC
  141.